package com.ebookstore.service.impl;

import java.util.Date;
import java.util.Iterator;
import java.util.List;

import com.ebookstore.dao.BaseDAO;
import com.ebookstore.dto.Cart;
import com.ebookstore.dto.CartItem;
import com.ebookstore.dto.Item;
import com.ebookstore.dto.Lineitem;
import com.ebookstore.dto.Order;
import com.ebookstore.dto.UserInfo;
import com.ebookstore.exception.EBookStoreException;
import com.ebookstore.service.OrderService;

public class OrderServiceImpl implements OrderService {

	private BaseDAO orderDao = new BaseDAO();

	public OrderServiceImpl() {
		super();
	}

	/**
	 * <p>
	 * 方法实现的功能 : 增加一个订单
	 * </p>
	 * 
	 * @param order
	 */
	public void addOrder(Order order, Lineitem lineitem, Item item) {
		try {
			orderDao.addObject(order);
			orderDao.addObject(lineitem);
			orderDao.addObject(item);
		} catch (EBookStoreException e) {
			e.printStackTrace();
		}
	}

	/**
	 * <p>
	 * 方法实现的功能 : 删除一个订单
	 * </p>
	 * 
	 * @param order
	 */
	public void delOrder(Order order) {
		try {
			orderDao.deleteObject(order);

		} catch (EBookStoreException e) {
			e.printStackTrace();
		}
	}

	/**
	 * <p>
	 * 方法实现的功能 : 根据订单号删除订单
	 * </p>
	 * 
	 * @param id
	 */
	public void delOrder(int id) {
		try {
			orderDao.deleteObject(id, Order.class);
		} catch (EBookStoreException e) {
			e.printStackTrace();
		}
	}

	/**
	 * <p>
	 * 方法实现的功能 : 通过订单号查找订单
	 * </p>
	 * 
	 * @param id
	 * @return
	 */
	public Object findOrderById(int id) {
		return orderDao.findById(id, Order.class);
	}

	/**
	 * <p>
	 * 方法实现的功能 : 通过查询语句查找Order
	 * </p>
	 * 
	 * @param strsql
	 * @return
	 */
	public List<Order> findOrderList(String strsql) {
		return orderDao.findByHql(strsql);
	}
	/**
	 * 保存订单
	 */
	public void addOrder(Order order, Cart cart, UserInfo user) throws EBookStoreException {
		//添加订单信息
		order.setOrderdate(new Date());
		order.setStatus("NEW");
		order.setTotalprice(cart.getSubTotal());
		order.setUserId(user.getUserId());
		order = (Order)orderDao.addObject(order);
		//分别添加订单明细信息
	    Iterator i = cart.getAllCartItems();
	    while (i.hasNext()) {
	      CartItem cartItem = (CartItem) i.next();
	      Lineitem lineitem = new Lineitem();
	      lineitem.setQuantity(cartItem.getQuantity());
	      System.out.println("添加订单，订单号"+order.getId());
//	      lineitem.setOrderId(Integer.parseInt(order.getId()));
	      lineitem.setItemId(cartItem.getItem().getItemId());
	      orderDao.addObject(lineitem);
	    }
	}

}
